/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.hl7.v3;

import org.eclipse.emf.common.util.EList;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>CD</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * 
 *             A concept descriptor represents any kind of concept usually
 *             by giving a code defined in a code system.  A concept
 *             descriptor can contain the original text or phrase that
 *             served as the basis of the coding and one or more
 *             translations into different coding systems. A concept
 *             descriptor can also contain qualifiers to describe, e.g.,
 *             the concept of a "left foot" as a postcoordinated term built
 *             from the primary code "FOOT" and the qualifier "LEFT".
 *             In exceptional cases, the concept descriptor need not
 *             contain a code but only the original text describing
 *             that concept.
 *          
 * <!-- end-model-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.hl7.v3.CD#getOriginalText <em>Original Text</em>}</li>
 *   <li>{@link org.hl7.v3.CD#getQualifier <em>Qualifier</em>}</li>
 *   <li>{@link org.hl7.v3.CD#getTranslation <em>Translation</em>}</li>
 *   <li>{@link org.hl7.v3.CD#getCode <em>Code</em>}</li>
 *   <li>{@link org.hl7.v3.CD#getCodeSystem <em>Code System</em>}</li>
 *   <li>{@link org.hl7.v3.CD#getCodeSystemName <em>Code System Name</em>}</li>
 *   <li>{@link org.hl7.v3.CD#getCodeSystemVersion <em>Code System Version</em>}</li>
 *   <li>{@link org.hl7.v3.CD#getDisplayName <em>Display Name</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.hl7.v3.V3Package#getCD()
 * @model extendedMetaData="name='CD' kind='elementOnly'"
 * @generated
 */
public interface CD extends ANY {
	/**
	 * Returns the value of the '<em><b>Original Text</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                         The text or phrase used as the basis for the coding.
	 *                      
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Original Text</em>' containment reference.
	 * @see #setOriginalText(ED)
	 * @see org.hl7.v3.V3Package#getCD_OriginalText()
	 * @model containment="true"
	 *        extendedMetaData="kind='element' name='originalText' namespace='##targetNamespace'"
	 * @generated
	 */
	ED getOriginalText();

	/**
	 * Sets the value of the '{@link org.hl7.v3.CD#getOriginalText <em>Original Text</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Original Text</em>' containment reference.
	 * @see #getOriginalText()
	 * @generated
	 */
	void setOriginalText(ED value);

	/**
	 * Returns the value of the '<em><b>Qualifier</b></em>' containment reference list.
	 * The list contents are of type {@link org.hl7.v3.CR}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                         Specifies additional codes that increase the
	 *                         specificity of the primary code.
	 *                      
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Qualifier</em>' containment reference list.
	 * @see org.hl7.v3.V3Package#getCD_Qualifier()
	 * @model containment="true"
	 *        extendedMetaData="kind='element' name='qualifier' namespace='##targetNamespace'"
	 * @generated
	 */
	EList<CR> getQualifier();

	/**
	 * Returns the value of the '<em><b>Translation</b></em>' containment reference list.
	 * The list contents are of type {@link org.hl7.v3.CD}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                         A set of other concept descriptors that translate
	 *                         this concept descriptor into other code systems.
	 *                      
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Translation</em>' containment reference list.
	 * @see org.hl7.v3.V3Package#getCD_Translation()
	 * @model containment="true"
	 *        extendedMetaData="kind='element' name='translation' namespace='##targetNamespace'"
	 * @generated
	 */
	EList<CD> getTranslation();

	/**
	 * Returns the value of the '<em><b>Code</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      The plain code symbol defined by the code system.
	 *                      For example, "784.0" is the code symbol of the ICD-9
	 *                      code "784.0" for headache.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Code</em>' attribute.
	 * @see #setCode(String)
	 * @see org.hl7.v3.V3Package#getCD_Code()
	 * @model dataType="org.hl7.v3.Cs"
	 *        extendedMetaData="kind='attribute' name='code'"
	 * @generated
	 */
	String getCode();

	/**
	 * Sets the value of the '{@link org.hl7.v3.CD#getCode <em>Code</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Code</em>' attribute.
	 * @see #getCode()
	 * @generated
	 */
	void setCode(String value);

	/**
	 * Returns the value of the '<em><b>Code System</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      Specifies the code system that defines the code.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Code System</em>' attribute.
	 * @see #setCodeSystem(String)
	 * @see org.hl7.v3.V3Package#getCD_CodeSystem()
	 * @model dataType="org.hl7.v3.Uid"
	 *        extendedMetaData="kind='attribute' name='codeSystem'"
	 * @generated
	 */
	String getCodeSystem();

	/**
	 * Sets the value of the '{@link org.hl7.v3.CD#getCodeSystem <em>Code System</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Code System</em>' attribute.
	 * @see #getCodeSystem()
	 * @generated
	 */
	void setCodeSystem(String value);

	/**
	 * Returns the value of the '<em><b>Code System Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      A common name of the coding system.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Code System Name</em>' attribute.
	 * @see #setCodeSystemName(String)
	 * @see org.hl7.v3.V3Package#getCD_CodeSystemName()
	 * @model dataType="org.hl7.v3.St"
	 *        extendedMetaData="kind='attribute' name='codeSystemName'"
	 * @generated
	 */
	String getCodeSystemName();

	/**
	 * Sets the value of the '{@link org.hl7.v3.CD#getCodeSystemName <em>Code System Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Code System Name</em>' attribute.
	 * @see #getCodeSystemName()
	 * @generated
	 */
	void setCodeSystemName(String value);

	/**
	 * Returns the value of the '<em><b>Code System Version</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      If applicable, a version descriptor defined
	 *                      specifically for the given code system.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Code System Version</em>' attribute.
	 * @see #setCodeSystemVersion(String)
	 * @see org.hl7.v3.V3Package#getCD_CodeSystemVersion()
	 * @model dataType="org.hl7.v3.St"
	 *        extendedMetaData="kind='attribute' name='codeSystemVersion'"
	 * @generated
	 */
	String getCodeSystemVersion();

	/**
	 * Sets the value of the '{@link org.hl7.v3.CD#getCodeSystemVersion <em>Code System Version</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Code System Version</em>' attribute.
	 * @see #getCodeSystemVersion()
	 * @generated
	 */
	void setCodeSystemVersion(String value);

	/**
	 * Returns the value of the '<em><b>Display Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      A name or title for the code, under which the sending
	 *                      system shows the code value to its users.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Display Name</em>' attribute.
	 * @see #setDisplayName(String)
	 * @see org.hl7.v3.V3Package#getCD_DisplayName()
	 * @model dataType="org.hl7.v3.St"
	 *        extendedMetaData="kind='attribute' name='displayName'"
	 * @generated
	 */
	String getDisplayName();

	/**
	 * Sets the value of the '{@link org.hl7.v3.CD#getDisplayName <em>Display Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Display Name</em>' attribute.
	 * @see #getDisplayName()
	 * @generated
	 */
	void setDisplayName(String value);

} // CD
